/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package xmlaufgabe7;

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.GridLayout;
import java.util.ArrayList;
import javax.swing.BorderFactory;
import javax.swing.BoxLayout;
import javax.swing.JCheckBox;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.SwingConstants;

/**
 * Panel zur Darstellung der vorhandenen Uebungen und ihrer herunterladbaren Dateien
 * (Aufgabenstellung, Ressourcen).
 * 
 * 
 * @author s0527676
 */
public class SelectionPanel extends JPanel {

    /**
     * Speichert das UebungData Datenobjekt
     */
    private UebungData dataModel;
    
    /**
     * Checkbox fuer die Aufgabenbeschreibung
     */
    private JCheckBox documentBox;
    
    /**
     * Liste von Checkboxen fuer die Ressourcen
     */
    private ArrayList<JCheckBox> ressourceBoxList;
    
    /**
     * Standard Konstruktor, initialisiert das UebungData Datenobjekt sowie alle
     * anzuzeigenden Komponenten des JPanels.
     * 
     * @param dataModel UebungData Datenobjekt
     */
    public SelectionPanel(UebungData dataModel) {
        this.dataModel = dataModel;
        documentBox = new JCheckBox();
        
        ressourceBoxList = new ArrayList<JCheckBox>();
        
        JPanel top = new JPanel();
        top.setLayout(new BorderLayout());
        top.setPreferredSize(new Dimension(300, 100));
        
        JPanel bot = new JPanel();
        bot.setLayout(new GridLayout(0,3));
        
        this.add(top);
        this.add(bot);
        
        JLabel name = new JLabel(dataModel.getNumber() + ". Aufgabe");
        name.setFont(new Font(name.getFont().getFamily(), Font.BOLD, 18));
        JLabel fileName = new JLabel(dataModel.getAufgabeLabel());
        JLabel ressources = new JLabel("Ressourcen");
        ressources.setFont(new Font(name.getFont().getFamily(), Font.PLAIN, 16));
        ressources.setHorizontalAlignment(SwingConstants.CENTER);
        
        top.add(name, BorderLayout.PAGE_START);
        top.add(fileName, BorderLayout.LINE_START);
        top.add(documentBox, BorderLayout.LINE_END);
        top.add(ressources, BorderLayout.PAGE_END);
        
        if(dataModel.getResourceNameCount() == 0) {
            ressources.setText("Keine Ressourcen");
        }
        
        for(int i = 0; i < dataModel.getResourceNameCount(); i++) {
            bot.add(new JLabel(dataModel.getResourceNameByIndex(i)));
            bot.add(new JLabel(dataModel.getFileNameByIndex(i)));
            ressourceBoxList.add(new JCheckBox());
            bot.add(ressourceBoxList.get(i));
            ressourceBoxList.get(i).setHorizontalAlignment(SwingConstants.RIGHT);
        }
        
        this.setLayout(new BoxLayout(this, BoxLayout.PAGE_AXIS));
        this.setBorder(BorderFactory.createLoweredBevelBorder());
        this.setVisible(true);
    }
    
    /**
     * Gibt die Anzahl der herunterladbaren Ressourcen zurueck.
     * 
     * @return Anzahl herunterladbarer Ressourcen
     */
    public int getRessourceBoxListSize() {
        return ressourceBoxList.size();
    }
    
    /**
     * Gibt den Status (markiert ja/nein) der Checkbox fuer die Aufgabenstellung
     * zurueck.
     * 
     * @return Status der Aufgabenstellungscheckbox
     */
    public String getDocumentBoxChecked() {
        String url = "";
        
        if(documentBox.isSelected()) {
            url = dataModel.getAufgabeURL();
        }
        
        return url;
    }
    
    /**
     * Gibt den Status (markiert ja/nein) der Checkbox fuer eine Ressource an Hand
     * des Index zurueck.
     * 
     * @param index Index
     * @return Status der Ressourcencheckbox
     */
    public String getRessourceBoxCheckedByIndex(int index) {
        String url = "";
        
        if(ressourceBoxList.get(index).isSelected()) {
            url = dataModel.getResourceURLByIndex(index);
        }
        
        return url;
    }
}
